home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 18 / CU Amiga Magazine's Super CD-ROM 18 (1997)(EMAP Images)(GB)[!][issue 1998-01].iso / CUCD / Programming / AmigaE / Src / Tools / EasyGUI / Plugins / imagebutton.e < prev    next >
Encoding:
Text File  |  1997-02-02  |  3.0 KB  |  102 lines

  1. OPT MODULE
  2.  
  3. MODULE 'tools/EasyGUI',
  4.        'graphics/rastport',
  5.        'intuition/intuition', 'intuition/gadgetclass',
  6.        'gadgets/button'
  7.  
  8. EXPORT OBJECT imagebutton OF plugin
  9.   selected
  10.   disabled
  11. PRIVATE
  12.   button:PTR TO gadget
  13.   buttonbase
  14.   image:PTR TO image
  15.   toggle, push, resize
  16.   width, height
  17. ENDOBJECT
  18.  
  19. PROC imagebutton(image:PTR TO image,width=0,height=0,resizex=FALSE,
  20.                  resizey=FALSE,disabled=FALSE) OF imagebutton
  21.   self.buttonbase:=OpenLibrary('gadgets/button.gadget',37)
  22.   IF self.buttonbase=NIL THEN Raise("butt")
  23.   self.image:=image
  24.   self.toggle:=FALSE
  25.   self.push:=FALSE
  26.   self.selected:=FALSE
  27.   self.resize:=(IF resizex THEN RESIZEX ELSE 0) OR
  28.                (IF resizey THEN RESIZEY ELSE 0)
  29.   self.disabled:=disabled
  30.   self.width:=Max(width,image.width)
  31.   self.height:=Max(height,image.height)
  32. ENDPROC
  33.  
  34. PROC toggleimagebutton(image,width=0,height=0,selected=FALSE,resizex=FALSE,
  35.                        resizey=FALSE,disabled=FALSE) OF imagebutton
  36.   self.imagebutton(image,width,height,resizex,resizey)
  37.   self.toggle:=TRUE
  38.   self.selected:=selected
  39. ENDPROC
  40.  
  41. PROC pushimagebutton(image,width=0,height=0,selected=FALSE,resizex=FALSE,
  42.                      resizey=FALSE,disabled=FALSE) OF imagebutton
  43.   self.imagebutton(image,width,height,resizex,resizey)
  44.   self.push:=TRUE
  45.   self.selected:=selected
  46. ENDPROC
  47.  
  48. PROC end() OF imagebutton
  49.   IF self.buttonbase THEN CloseLibrary(self.buttonbase)
  50. ENDPROC
  51.  
  52. PROC min_size(ta,fh) OF imagebutton
  53. ENDPROC self.width+4, self.height+2
  54.  
  55. PROC will_resize() OF imagebutton IS self.resize
  56.  
  57. PROC render(ta,x,y,xs,ys,w:PTR TO window) OF imagebutton
  58.   self.button:=NewObjectA(NIL,'button.gadget',
  59.                          [GA_TOP,y, GA_LEFT,x, GA_WIDTH,xs, GA_HEIGHT,ys,
  60.                           GA_IMAGE,self.image, GA_TOGGLESELECT,self.toggle,
  61.                           BUTTON_PUSHBUTTON,self.push,
  62.                           GA_DISABLED,self.disabled, GA_SELECTED,self.selected,
  63.                           GA_RELVERIFY,TRUE, BUTTON_FILLPEN,w.rport.bgpen, NIL])
  64.   IF self.button=NIL THEN Raise("butt")
  65.   AddGList(w,self.button,-1,1,NIL)
  66.   RefreshGList(self.button,w,NIL,1)
  67. ENDPROC
  68.  
  69. PROC clear_render(win:PTR TO window) OF imagebutton
  70.   IF self.button
  71.     RemoveGList(win,self.button,1)
  72.     DisposeObject(self.button)
  73.   ENDIF
  74. ENDPROC
  75.  
  76. PROC message_test(imsg:PTR TO intuimessage,win) OF imagebutton
  77.   IF imsg.class=IDCMP_GADGETUP THEN RETURN imsg.iaddress=self.button
  78. ENDPROC FALSE
  79.  
  80. PROC message_action(class,qual,code,win) OF imagebutton
  81.   self.selected:=code
  82. ENDPROC TRUE
  83.  
  84. PROC setselected(selected=TRUE) OF imagebutton
  85.   IF self.toggle OR self.push
  86.     SetGadgetAttrsA(self.button,self.gh.wnd,NIL,[GA_SELECTED,selected,NIL])
  87.     self.selected:=selected
  88.   ENDIF
  89. ENDPROC
  90.  
  91. PROC setimage(image:PTR TO image) OF imagebutton
  92.   IF (image.width<=self.width) AND (image.height<=self.height)
  93.     SetGadgetAttrsA(self.button,self.gh.wnd,NIL,[GA_IMAGE,image,NIL])
  94.     self.image:=image
  95.   ENDIF
  96. ENDPROC
  97.  
  98. PROC setdisabled(disabled=TRUE) OF imagebutton
  99.   SetGadgetAttrsA(self.button,self.gh.wnd,NIL,[GA_DISABLED,disabled,NIL])
  100.   self.disabled:=disabled
  101. ENDPROC
  102.